; hello_bochs.asm    
    org 07c00h                      ; BIOS会跳到此处执行，但是CS段仍指向0，IP指向0x7c00，因此boot内的偏移需要以0x7c00为基准
    mov ax, cs
    mov ds, ax
    mov es, ax

    ; 使用BIOS的0x10中断输出显示
    mov bp, MessageDisp         ; 显示字符串的地址，最终指向es:bp
    mov cx, MessageDispLen      ; 假设待显示字符个数存放在cx寄存器中，因此此处不需要设置
    mov ah, 13h                 ; 功能码13h
    mov al, 1                   ; 显示方式为1：字符串中只包含字符，显示属性在bl中，光标位置改变
    mov bl, 0ch                 ; 显示属性：黑底红字
    mov bh, 0                   ; 页码 0，当前还没有滚屏操作
    mov dx, 1800h               ; 0x18行，0列位置开始显示
    int 10h

    jmp $

MessageDisp:          db  "Hello bochs!"
MessageDispLen        equ $ - MessageDisp

times 510-($-$$)    db 0
dw 0xaa55